/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mware_lib;

import java.net.UnknownHostException;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * @author Gortex
 */
public class ReferenceModule {

    private Map<String, IBaseSkeleton> dictonary;

    protected ReferenceModule() {
        dictonary = new ConcurrentHashMap<String, IBaseSkeleton>();
    }

    protected IBaseSkeleton getSkelletonForRef(String ref) {
        if (dictonary.containsKey(ref)) {
            return dictonary.get(ref);
        } else {
            return null;
        }
    }

    /**
     * für eine z.B. kontoobjekt wird aus den lokalen daten (eigene netztwerkadresse, 
     * port des listenerthreads), der objektkennnung (hashcode) und objekttyp erzeugt.#
     * diese dient dann als eintrag beim namensdienst und als schlüssel um zugehörige 
     * skeletons zu identifizieren und nachrichten zu adressieren
     * @param obj
     * @param port
     * @return 
     */
    protected String generateReference(Object obj, int port) {
        try {

            String reference = "";
            reference += java.net.InetAddress.getLocalHost().getHostAddress();
            reference += ":" + port;
            reference += ":" + obj.hashCode() + ":" + obj.getClass();
            return reference;

        } catch (UnknownHostException ex) {
            return null;
        }
    }

    protected void register(String objectReference, IBaseSkeleton obj) {
        dictonary.put(objectReference, obj);
    }
}
